In traditional environments, optimization of assets, services, and other elements may be done on a case-by-case basis. Such an approach may produce specialized solutions for each problem, that are difficult to generalize and maintain. Thus, even small changes in the problem definition may require a large amount of effort to modify the solution, increasing the cost and time of development and maintenance of such solutions.